package com.example.aiinterview.config;

import com.example.aiinterview.model.User;
import com.example.aiinterview.service.UserService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
@RequiredArgsConstructor
@Slf4j
public class DataInitializer implements CommandLineRunner {

    private final UserService userService;

    @Override
    public void run(String... args) throws Exception {
        System.out.println("🚀 正在初始化系统数据...");
        
        // 创建默认管理员用户
        createDefaultAdmin();
        
        // 创建测试用户
        createTestUser();
        
        System.out.println("🎯 系统数据初始化完成！");
    }

    private void createDefaultAdmin() {
        try {
            if (!userService.existsByUsername("admin")) {
                User adminUser = userService.registerNewUser("admin", "admin123", "admin@example.com", "系统管理员", User.Role.ADMIN);
                log.info("默认管理员用户创建成功: admin/admin123 (明文密码), 用户ID: {}", adminUser.getId());
            } else {
                log.info("管理员用户已存在，跳过创建");
                // 检查现有管理员用户的角色
                User existingAdmin = userService.findByUsername("admin");
                if (existingAdmin != null && existingAdmin.getRole() != User.Role.ADMIN) {
                    existingAdmin.setRole(User.Role.ADMIN);
                    userService.saveUser(existingAdmin);
                    log.info("已更新管理员用户的角色为ADMIN");
                }
            }
        } catch (Exception e) {
            log.error("创建默认管理员用户失败: {}", e.getMessage(), e);
        }
    }
    
    private void createTestUser() {
        try {
            if (!userService.existsByUsername("testuser")) {
                User testUser = userService.registerNewUser("testuser", "test123", "test@example.com", "测试用户", User.Role.USER);
                log.info("测试用户创建成功: testuser/test123 (明文密码), 用户ID: {}", testUser.getId());
                System.out.println("✅ 测试用户账户已创建: testuser/test123");
            } else {
                log.info("测试用户已存在，跳过创建");
                System.out.println("ℹ️ 测试用户账户已存在");
            }
        } catch (Exception e) {
            log.error("创建测试用户失败: {}", e.getMessage(), e);
            System.out.println("❌ 创建测试用户账户失败: " + e.getMessage());
        }
    }
}
